package com.basker.pisces.core.datasource;

import com.basker.pisces.spring.SpringApplicationContext;

public interface IDataSourceManager {

    /**
     * 获取IBeanRepository的实例
     *
     * @return
     */
    public static IDataSourceManager getInstance() {
        return SpringApplicationContext.getInstance().getBean(IDataSourceManager.class);
    }

    /**
     * 获取数据源对应的数据库信息
     *
     * @param dataSourceName
     * @return
     */
    DbInfo getDataSourceInfo(String dataSourceName);

    /**
     * 获取默认数据源的数据库信息
     *
     * @return
     */
    default DbInfo getDefaultDataSourceInfo() {
        return getDataSourceInfo(getDefaultDataSourceName());
    }

    /**
     * 获取默认的数据源名称
     *
     * @return
     */
    String getDefaultDataSourceName();

    /**
     * 移除线程上下文的数据库
     */
    void removeContextDataSourceName();

    /**
     * 设置线程上下文的数据库
     *
     * @param dataSourceName
     */
    void setContextDataSourceName(String dataSourceName);
}
